﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace AplicacionMVC.Controllers
{
    public class ClienteController : Controller
    {
        private ClienteWS.ClientesClient proxy = new ClienteWS.ClientesClient();
        private PacienteWS.PacientesClient proxyPacientes = new PacienteWS.PacientesClient();
        
        public ActionResult Index()
        {
            List<ClienteWS.Cliente> v = proxy.ListarCliente();
            return View(v);
        }

        public ActionResult Details(int id)
        {
            ClienteWS.Cliente v = proxy.ObtenerCliente(id);
            List<PacienteWS.Paciente> pacientes = proxyPacientes.ListarPaciente();
            List<SelectListItem> items = new List<SelectListItem>();
            foreach (PacienteWS.Paciente i in pacientes)
            {
                if (i.Cliente.idCliente == id)
                {
                    items.Add(new SelectListItem
                    {
                        Text = i.txtPaciente.ToString(),
                        Value = i.IdPaciente.ToString()
                    });
                }
            }
            ViewData["Listapacientes"] = items;
            
            return View(v);
        }

        public ActionResult Create()
        {
            return View();
        } 
        
        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                string txtClienteNombre = collection["txtClienteNombre"];
                string txtClienteApellido = collection["txtClienteApellido"];
                string NumDocumento = collection["NumDocumento"];

                ClienteWS.Cliente v = proxy.CrearCliente(txtClienteNombre, txtClienteApellido, NumDocumento);

                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, "Error: " + ex.Message.ToString());
                return View();
            }
        }
        
        public ActionResult Edit(int id)
        {
            try
            {
                ClienteWS.Cliente v = proxy.ObtenerCliente(id);
                return View(v);
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(string.Empty, "Error: " + ex.Message.ToString());
                return View();
            }
        }

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                int codigo = int.Parse(collection["idCliente"]);
                string txtClienteNombre = collection["txtClienteNombre"];
                string txtClienteApellido = collection["txtClienteApellido"];
                string NumDocumento = collection["NumDocumento"];
                ClienteWS.Cliente v = proxy.ModificarCliente(codigo, txtClienteNombre, txtClienteApellido, NumDocumento);

                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                //mensaje de error
                ModelState.AddModelError(string.Empty, "Error: " + ex.Message.ToString());
                return View();
            }
        }

        public ActionResult Delete(int id)
        {
            try
            {
                ClienteWS.Cliente v = proxy.ObtenerCliente(id);
                List<PacienteWS.Paciente> pacientes = proxyPacientes.ListarPaciente();
                List<SelectListItem> items = new List<SelectListItem>();
                foreach (PacienteWS.Paciente i in pacientes)
                {
                    if (i.Cliente.idCliente == id)
                    {
                        items.Add(new SelectListItem
                        {
                            Text = i.txtPaciente.ToString(),
                            Value = i.IdPaciente.ToString()
                        });
                    }
                }
                ViewData["Listapacientes"] = items;
                return View(v);
            }
            catch (Exception ex)
            {
                //mensaje de error
                ModelState.AddModelError(string.Empty, "Error: " + ex.Message.ToString());
                return View();
            }
        }

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                proxy.EliminarCliente(id);
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                //mensaje de error
                ModelState.AddModelError(string.Empty, "Error: " + ex.Message.ToString());
                return RedirectToAction("Index");
            }
        }

    }
}
